// 服务端 负责创建命名管道并且接收消息
#include "comm.hpp"

int main()
{
    // 1 创建命名管道
    int i = mkfifo(ipcPath, MODE);
    if (i < 0)
    {
        perror("mkfifo:");
        exit(1);
    }

    // 2 服务端开启读
    int fd = open(ipcPath, O_RDONLY);  // 只读
    if (fd < 0)
    {
        perror("oepn:");
        exit(2);
    }
    char buffer[SIZE] = {0};
    while (true)
    {
        memset(buffer, 0, sizeof buffer);
        ssize_t j = read(fd, buffer, sizeof(buffer) - 1);
        if (j < 0)
        {
            perror("read:");
            exit(3);
        }
        if (j == 0)
        {
            // 写入端关闭，服务器可以退出了
            cout << "客户端关闭,服务器3s后关闭\n";
            sleep(3);
            break;
        }
        cout << "客户端发来消息>" << buffer << endl;
    }
    // 关闭文件 && 删除命名管道文件
    close(fd);
    unlink(ipcPath);
    return 0;
}